﻿using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace EntityModels.Entities
{
    // 使用特性指定表名和架构名
    [Table("CustomTableName", Schema = "dbo")]
    public class SimpleEntity
    {
        // 使用特性指定属性为主键
        [Key]
        public Guid Id { get; set; }

        // 使用特性指定属性为自增长列
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public long SimpleEntityId { get; set; }

        // 使用特性指定列名和列类型
        [Column("CustomColumnName", TypeName = "int")]
        public int? NullableStruct { get; set; }
        public double FloatNumber { get; set; }
        public decimal DecimalNumber { get; set; }
        public bool Bit { get; set; }
        public DateTime NormalDateTime { get; set; }
        public DateTimeOffset DateTimeOffset { get; set; }
        public Number Enum { get; set; }
        public Number? NullableEnum { get; set; }
        public char Character { get; set; }
        // 使用特性指定列不可为空
        [Required]
        // 使用特性指定列大小和不符合规则时使用的错误提示模板
        [StringLength(50, MinimumLength = 1, ErrorMessage = "{0} 必须至少有 {2} 个字符，并且最多只能有 {1} 个字符。")]
        public virtual string Text { get; set; }
        public byte[] BinaryData { get; set; }

    }

    public enum Number
    {
        Zero = 0,
        One = 1,
        Two = 2
    }
}
